import Vue from 'vue'
import iView from 'iview';
import axios from 'axios'
import {routers} from "../router";
import VueRouter from "vue-router";
// 创建电商各接口请求方法的实例
const service = axios.create({
  baseURL: '', //api的base_url
  timeout: 15000 //请求超时时间设置
});
/** 路由配置 */
const RouterConfig = {
  routes: routers
};
Vue.use(VueRouter);
const router = new VueRouter(RouterConfig);
// 请求异常信息统一处理
const error = (err) => {
  Vue.prototype.$Spin.hide();
  if (err.response) {
    if (err.response.status === 401) {
      Vue.prototype.$Notice.error({
        title: '授权失效，请重新登录！'
      });
      router.push({
        name:'login'
      });
      Vue.prototype.$ls.remove('user');
      Vue.prototype.$ls.remove('password');
      Vue.prototype.$ls.remove('hasGreet');
      Vue.prototype.$ls.remove('access');
      Vue.prototype.$Notice.close('greeting');
      localStorage.clear();
      window.location.reload();
      // 举例针对403的一些异常处理
    }else if(err.response.status === 402){
      Vue.prototype.$Notice.error({
        title: '授权失效，请重新登录！'
      });
      router.push({
        name:'login'
      });
      Vue.prototype.$ls.remove('user');
      Vue.prototype.$ls.remove('password');
      Vue.prototype.$ls.remove('hasGreet');
      Vue.prototype.$ls.remove('access');
      Vue.prototype.$Notice.close('greeting');
      localStorage.clear();
      window.location.reload();
    }
  }
  return Promise.reject(err)
};

// 对请求（request）拦截处理
service.interceptors.request.use(config => {
  iView.LoadingBar.start();
  const token = Vue.ls.get('ACCESS_TOKEN');
  const session = Vue.ls.get('SESSION_ID');
  if (token) {
    config.headers['Authorization'] = token
  }
  if (session) {
    config.headers['session'] = session
  }
  return config
}, error);
// 对响应（response）进行统一处理
service.interceptors.response.use((response) => {
  iView.LoadingBar.finish();
  // let code = response.data.code;
  return response.data
},error);

export default service

